package com.chat.service;

import com.chat.Local;
import com.chat.common.ChatMsg;
import com.chat.common.Group;
import com.chat.common.Message;
import com.chat.common.MessageType;
import com.chat.io.SetFile;
import com.chat.view.ChatListData;
import com.chat.view.MainWindowView;
import javafx.application.Platform;

import java.util.ArrayList;
import java.util.Objects;

import static com.chat.view.MainWindowController.chat;

/*
   获取群聊历史记录
 */
public class GetGroupHistoryMsg {
      public void get(String groupid){
            Message msg=new Message();
            Group group=new Group();
            group.setId(groupid);
            msg.setData(group);
            msg.setMesType(MessageType.MESSAGE_GET_GROUP_HISTROY_MSG);
            ClientConnectServerThread clientConnectServerThread=ManageClientConnectServerThread.getClientConnectServerThread(Local.user.getUsername());
            clientConnectServerThread.send(msg);
      }
      public void set(ArrayList<ChatMsg> a) {//加载群聊历史记录
            Platform.runLater(new Runnable() {
                  @Override
                  public void run() {
                        for(int i=a.size()-1;i>=0;i--)
                        {      //自己发的文字
                              if(a.get(i).getSenderid().equals(Local.user.getUsername())&& Objects.equals(a.get(i).getType(), "1")){
                                    chat.add(new ChatListData(Local.user.getNickname(),a.get(i).getContent(),a.get(i).getSenderid(),a.get(i).getType(),a.get(i).getTime()));
                              }
                              //自己发的图片
                              else if(a.get(i).getSenderid().equals(Local.user.getUsername())&& Objects.equals(a.get(i).getType(), "2")){
                                    SetFile sf=new SetFile();
                                    sf.set((byte[]) a.get(i).getFile(),a.get(i).getFilename());//将图片下载到本地
                                    chat.add(new ChatListData(Local.user.getNickname(),a.get(i).getFilename(),a.get(i).getSenderid(),a.get(i).getType(),a.get(i).getTime()));
                              }
                              //自己发的文件
                              else if((a.get(i).getSenderid().equals(Local.user.getUsername())&& Objects.equals(a.get(i).getType(), "3"))){
                                    chat.add(new ChatListData(Local.user.getNickname(), a.get(i).getAddress(), a.get(i).getFilename(), a.get(i).getSenderid(), a.get(i).getTime(), a.get(i).getType()));
                              }
                              //其他群成员发的文字
                              else if(!Objects.equals(a.get(i).getSenderid(), Local.user.getUsername())&& Objects.equals(a.get(i).getType(), "1")){
                                    chat.add(new ChatListData(a.get(i).getSendernickname(),a.get(i).getContent(),a.get(i).getSenderid(),a.get(i).getType(),a.get(i).getTime()));
                              }
                              //其他群成员发的图片
                              else if(!Objects.equals(a.get(i).getSenderid(), Local.user.getUsername())&& Objects.equals(a.get(i).getType(), "2")){
                                    SetFile sf=new SetFile();
                                    sf.set((byte[]) a.get(i).getFile(),a.get(i).getFilename());//将图片下载到本地
                                    chat.add(new ChatListData(a.get(i).getSendernickname(),a.get(i).getFilename(),a.get(i).getSenderid(),a.get(i).getType(),a.get(i).getTime()));
                              }
                              //其他群成员发的文件
                              else if(!Objects.equals(a.get(i).getSenderid(), Local.user.getUsername())&& Objects.equals(a.get(i).getType(), "3")){
                                    chat.add(new ChatListData(a.get(i).getSendernickname(),a.get(i).getAddress(),a.get(i).getFilename(),a.get(i).getSenderid(),a.get(i).getTime(),a.get(i).getType()));

                              }
                        }
                        Platform.runLater(new Runnable() {
                              @Override
                              public void run() {
                                    ((javafx.scene.control.ListView) MainWindowView.$("chatlist")).scrollTo(1000);
                              }
                        });
                  }
            });
      }
}
